package com.itheima.polymorphic_test;

import java.time.Period;

/*
   多态的使用方向
        1 定义方法的时候，使用父类型作为参数，该方法就可以接收这父类的任意子类对象 !!!
	    2 定义方法的时候,  使用父类作为方法的返回值类型 , 该方法可以返回此父类任意子类对象 !!!
	    3 定义变量时 , 用父类类型变量接收子类类型对象(基本不用!)

 */
public class Test2 {
    public static void main(String[] args) {
        usePerson(new Student());

        // 3 定义变量时 , 用父类类型变量接收子类类型对象(基本不用!)
        Person p1 = new Student();
        Person p2 = new Teacher();
    }

    // 定义方法的时候，使用父类型作为参数，该方法就可以接收这父类的任意子类对象 !!!
    public static void usePerson(Person p) {// Person p = new Student()

    }

    //  2 定义方法的时候,  使用父类作为方法的返回值类型 , 该方法可以返回此父类任意子类对象 !!!
    public static Person getStudent() {
        // return new Student();
        return new Teacher();
    }

}

abstract class Person {
    public abstract void eat();
}

class Student extends Person {
    @Override
    public void eat() {

    }
}

class Teacher extends Person {

    @Override
    public void eat() {

    }
}

